Here's the scheme for sending the upload patch.

Firstly, send 'patch.bin' to 80000340
Next, add these two codes to the Active Code List (see below)
D002A8C3 0008
810003E2 F00D

Write 080000D0 to 8001385C
Write 24002B30 to 80013860


This patches it for multiplayer!
The MP patch still allows you to select solo stages.
The activators flip around UsetupjunZ and Ump_setupjunZ
Write 706A756E to 8005B260
Write 5A000000 to 8005B264
then, add these codes to the Active Code List (see below)
D002A8C3 000E
810003E2 F00D
D002A8C3 0008
81047D3A B258
D002A8C3 0008
81047DBE B2E8
D002A8C3 000E
81047D3A B2E8
D002A8C3 000E
81047DBE B258

These allow you to upload setups for the level listed
Write 5960 to 8003750A	/*BunkerI*/
Write 5960 to 80037536	/*Silo*/
Write 5960 to 8003753E	/*Statue Park*/
Write 5960 to 80037542	/*Control*/
Write 5960 to 80037546	/*Archives*/
Write 5960 to 8003754A	/*Train*/
Write 5960 to 8003754E	/*Frigate*/
Write 5960 to 80037552	/*BunkerII*/
Write 5960 to 80037556	/*Aztec*/
Write 5960 to 8003755A	/*Streets*/
Write 5960 to 8003755E	/*Depot*/
Write 5960 to 80037562	/*Complex*/
Write 5960 to 80037566	/*Egyptian*/
Write 5960 to 8003756A	/*Dam*/
Write 5960 to 8003756E	/*Facility*/
Write 5960 to 80037572	/*Runway*/
Write 5960 to 80037576	/*Suface I*/
Write 5960 to 8003757E	/*Temple*/
Write 5960 to 80037582	/*Caverns*/
Write 5960 to 80037586	/*Citadel*/
Write 5960 to 8003758A	/*Cradle*/
Write 5960 to 80037592	/*Surface II*/
Write 5960 to 8003759A	/*Basement*/
Write 5960 to 8003759E	/*Stacks*/
Write 5960 to 800375A6	/*Library*/
Write 5960 to 800375AE	/*Caves*/
Write 5960 to 800375BE	/*Cuba*/


As for sending a level, it's the same as it always was.
Upload the level to the same place as usual and then overwrite BAADF00D with 0.
  The new feature is that before uploading you can check if BAADF00D is written.  If it isn't, then the loop isn't going and you can keep them from uploading a few thousand of bytes over the menus ;*)
  Also, even if they used codes to write the upload routine (old or new!) it still works.

  Multiplayer doesn't need any special stuff to upload now.  You can switch between uploading solo and multiplayer levels without any trouble.


---------Active Code List
Adding codes to the active code list isn't too nasty.
Read word at A07E9D60.  This lets you know how many active codes are already listed.
The list starts at A07E9D64.  To get to the next available address in the list, multiply the number of codes by six.
Write the code, then update the number of active codes.
Below is an example:


int AddActiveCode(unsigned long addy, unsigned short val)
  {unsigned long num;        /*number of codes in list*/

/*grab #codes currently in list*/
if (InitGSComms()) return -1;
	ReadWriteByte(1);
	ReadWrite32(0xA07E9D60);
	ReadWrite32(4);
	num=ReadWrite32(0);
	ReadWrite32(0);
	ReadWrite32(0);

/*write code*/
if (InitGSComms()) return -1;
   	ReadWriteByte(2);
    ReadWrite32(0xA07E9D64 + (num * 6));
    ReadWrite32(4);
    ReadWrite32(addy);
    ReadWrite32(0xA07E9D68 + (num * 6));
    ReadWrite32(2);
    ReadWrite16(val);
/*update number of codes in list*/
    ReadWrite32(0xA07E9D60);
    ReadWrite32(4);
    ReadWrite32(num+1);
	ReadWrite32(0);
	ReadWrite32(0);

  return num+1;}

---------------
Matching Code list!
"Upload Stages 1 #61" .off
81000340 3C08
81000342 8009
81000344 8D08
81000346 D354
81000348 3C09
8100034A 0001
8100034C 3529
8100034E 91E0
81000350 0109
81000352 4821
81000354 8D2A
81000356 0000
81000358 3C0B
8100035A 7034
8100035C 356B
8100035E 3637
81000360 154B
81000362 0011
81000364 8D2A
81000366 0008
81000368 154B
8100036A 000F
8100036C 8D2A
8100036E 0004
81000370 3C0B
81000372 3961
81000374 154B
81000376 000C
81000378 8D2A
8100037A 000C
8100037C 154B
8100037E 000A
81000380 3409
81000382 BAAD
81000384 3C08
81000386 8000
81000388 A509
8100038A 03E0
8100038C 8D0A
8100038E 03E0
81000390 3C09
81000392 BAAD
81000394 3529
81000396 F00D
81000398 552A
8100039A 0003
8100039C AD00
8100039E 03E0
810003A0 1000
810003A2 FFFB
810003A4 8D0A
810003A6 03E0
810003A8 24E0
810003AA 24C6
810003AC FFFF
810003AE 0800
810003B0 4E18
810003B2 906E
810003B4 0000
D002A8C3 0008
810003E2 F00D
8101385C 0800
8101385E 00D0
81013860 2400
81013862 2B30

"Upload Stages 2 #50" .off
50002304 0000
81037536 5960
8103750A 5960
8105B260 706A
8105B262 756E
8105B264 5A00
8105B266 0000
D002A8C3 000E
810003E2 F00D
D002A8C3 0008
81047D3A B258
D002A8C3 0008
81047DBE B2E8
D002A8C3 000E
81047D3A B2E8
D002A8C3 000E
81047DBE B258